/*
@author: lyf
@file: s.go
@time: 2022/10/14 16:23
*/
package main

import "fmt"

//定义节点
type Node struct {
	//节点值
	item int
	//定义左右节点
	left *Node
	right *Node
}

//定义树
type Tree struct {
	root *Node
}

//创建二叉树
func (tree *Tree) createTree(value int){
	//定义一个node，引用结构体Node，value为int型
	node := &Node{item: value}
	//输出结论
	fmt.Println("增加节点", value)
	//判断tree是否为空
	if tree.root == nil {
		tree.root = node
		return
	}else {
		//定义queue为一个切片，指向Node，引用树tree.root
		var queue = []*Node{tree.root}
		//创建循环，如果queue长度不为0执行下一步
		for len(queue) != 0 {
			cur := queue[0]
			queue = queue[1:]
			//判断左子树是否为空
			if cur.left == nil {
				cur.left = node
				return
			//	判断右子树是否为空
			}else if cur.right == nil {
				cur.right = node
				return
			//	不为空则添加左右子树
			}else {
				queue = append(queue, cur.left)
				queue = append(queue, cur.right)
			}
		}
	}
}

func main() {
	var t Tree
	t.createTree(2)
}